热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

磁头|磁盘驱动器_服务器的RAID

篇首语:本文由编程笔记#小编为大家整理,主要介绍了服务器的RAID相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了服务器的RAID相关的知识,希望对你有一定的参考价值。



一、RAID的由来

1.1什么是RAID

        磁盘阵列(Redundant Arrays of Independent Drives)又称RAID,有“独立磁盘构成的具有冗余能力的阵列”之意。

1.2 为什么做RAID

        提到RAID 就不可避免要说说硬盘,硬盘的类型从IDE硬盘到SATA硬盘、SAS硬盘继而到现在的SSD硬盘,各种性能都在提升,速度也在不断提高。但是在类似机场这种大型的生产环境下,单块甚至几块硬盘已经无法发挥作用,就需要另辟蹊径找到更佳的提升磁盘性能的方法,于是IT人创造了磁盘阵列这一概念。磁盘阵列就是将很多单块的磁盘组合在一起,构成一个磁盘组。磁盘阵列的诞生,不仅再一次解决了数据访问速度的难题,同时还降低了部分硬盘损坏影响整个系统的风险。

二、RAID级别详解

2.1 RAID 0(条带化技术)

        为了提高传输速率,RAID 0实现了通过在多个磁盘上并行操作来大幅提高访问速度这一功能,其原理是让很多磁盘驱动器同时读写数据。举个例子:假如有2块磁盘,没有RAID技术之前是先写满一块磁盘然后再继续写下一块磁盘,而RAID 0技术的实现使得多块磁盘同时读写成为现实,那么2块硬盘的并行操作在同一时间内磁盘读写的速度就提升了2倍。所以用RAID 0可以达到单个磁盘驱动器几倍的速率。如下图所示:

服务器的RAID_RAID

        虽然RAID 0可以提供更多的空间和更好的性能,但是RAID 0没有冗余和错误修复能力,因此整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,不提倡用RAID 0,只是在那些对数据安全性要求不高的情况下才被人们使用。

 2.2 RAID 1(镜像)

        RAID 1称为磁盘镜像,原理是把一个磁盘的数据同时也要放到另一个磁盘上。镜像技术的实现,大大提高了系统的冗余能力,这种情况下,某块磁盘出现问题,因为数据的双份存储,系统仍旧可以正常运行。如下图所示:

服务器的RAID_数据_02

        虽然这样对数据来讲绝对安全,但是成本也会明显增加.假设一个系统实际需要存储400G,每块硬盘容量100G,四块足矣,但是现实却是需要8块硬盘,这可以说是镜像技术的一大硬伤。

        有一点要特别注意,就是在实际生产中,一旦出现硬盘故障,虽然由于镜像的存在系统仍旧可用,但是已经不再安全,不要抱有任何侥幸思想,应当及时的更换损坏的硬盘,否则剩余的镜像盘也可能出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降,这就是降效。

2.3 RAID 10

        RAID 1+0 也被称为RAID 10标准,实际是将RAID 1和RAID 0进行结合,即先进行镜像然后进行条带化。以下图为例进行讲解,首先创建2个独立的Raid1,磁盘1 和磁盘2做RAID 1,磁盘3和磁盘4也做成RAID 1。然后将这两个独立的Raid1组成一个Raid0,当往这个逻辑Raid中写数据时,数据会按顺序写入两个Raid1中。这里一定是按顺序的,因为要保证先分别在两个RAID 1中做镜像,最后整体做RAID 0,比如写在硬盘1上的数据1、3、5、7,写在硬盘2中则为数据1、3、5、7,硬盘3中的数据为0、2、4、6,硬盘4中的数据则为0、2、4、6,因此数据在这四个硬盘上组合成Raid10,且具有raid0和raid1两者的特性。如下图所示:服务器的RAID_常用命令_03

Raid 10 和 Raid01的区别:

        RAID 01是先做两个RAID 0,然后整体在做一个RAID 1,所以RAID01虽然可以坏多快 盘,但是只能坏在同一个RAID 0 里,不允许两个RAID 0内都有坏盘,否则就会造成 数据缺失。

        RAID 10恰恰相反,是先做两个RAID 1,再整体做一个RAID 0,所以RAID 10也允许 坏多块盘,前提是坏的这两块盘不是一对镜像盘。

接下来用数据证明RAID 10 优于RAID 01.

服务器的RAID_RAID_04服务器的RAID_linux_05

         假设,此时Disk0故障,那么在RAID 01 中,左边的条带就无法读取了,剩下的两块磁盘坏了任何一块,系统都会over,所以故障率为2/3;同样是Disk0 损坏,发生在RAID10中时,只有当Disk1损坏时,整个系统才会over,此时故障率为1/3.综上所述,RAID 10 优于RAID 01 。

2.4 RAID 3

         RAID 3是把数据分成多个“块”,然后按照奇偶校验方式,将校验信息存放在第N个硬盘上,这块盘被称为校验盘,而实际数据是被存储在另外N-1块磁盘上,当这N个硬盘中的其中一个硬盘出现故障时,通过校验其它N-1个硬盘中的数据也可以恢复原始数据, 如下图所示:服务器的RAID_常用命令_06

        上面提到的校验实际上就是奇偶校验,而奇偶校验值的计算是以各个硬盘的相对应位进行异或的逻辑运算,然后将结果写入奇偶校验硬盘。

拓展:XOR的校验原理如下表:服务器的RAID_数据_07

        这里的A与B值就代表了两个位,从中可以发现,A与B一样时,XOR结果为0,A与B不一样时,XOR结果就是1,而且知道XOR结果和A与B中的任何一个数值,就可以反推出另一个数值。比如A为1,XOR结果为1,那么B肯定为0,如果XOR结果为0,那么B肯定为1。这就是XOR编码与校验的基本原理。

        RAID3的系统中,当一块硬盘失效时,该硬盘上的所有数据块必须使用校验信息重新建立。如果是从好盘中读取数据块,不会有任何变化;但是如果要读取的数据块正好位于已经损坏的硬盘上,则必须同时读取同一带区中的所有其它数据块(磁头同步扫磁盘)。某些情况下,要找的数据在一块磁盘上,那么此时如果依旧是所有磁盘都参与同步去扫,就是一种资源浪费,为了避免这种磁头同步扫描磁盘的现象,又有了RAID 5的产生。

2.5 RAID 5

服务器的RAID_数据_08

        RAID5(分布式奇偶校验的独立磁盘结构)。它的奇偶校验码存在于所有磁盘上(磁头异步扫描磁盘),与RAID 3有所区别,RAID 3的校验盘是最后一块盘。其中的pn代表第n带区的奇偶校验值,其它的意思也相同。RAID5的读出效率很高,写入效率一般,因为独读出数据时是单个磁盘异步操作,而读入时之所以慢是因为每块盘上都有校验,需要计算。RAID 3 与RAID 5相比,重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。

总结

        各种RAID级别都有自己的优势,没有哪一种是最好的,也没有哪一种是最差的,只有根据生产情况去选择最合适的



推荐阅读
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
author-avatar
洋索菲命_563
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有